# a = ()
# print(type(a))
# b = tuple()
# print(type(b))

# a = (1,"hello",[3,4,5,True])
# print(a)

# a = (1,2,3,4)
# a[0] = 100 #有问题
# a.append(5) #没有这个方法
# a.pop() #没有这个方法
# a.extend() #没有这个方法

# def getPoint():
#     x = 10
#     y = 20
#     return x,y
#
# x,y = getPoint()
# print(type(getPoint()))

# a = {}
# print(type(a))
# b = dict()
# print(type(b))

# a = {
#     "id" : 1,
#     "name" : "张三"
# } #更建议这种直观的代码写法

#字典a中包含了两个键值对，第一个键值对的key是"id"，value是1
#第一个键值对的key是"name"，value是"张三"
#字典对于key的类型有约束，对于value的类型没约束
# print(a)

# a = {
#     "id" : 1,
#     "name" : "张三"
# }
#
# print("id" in a)
# print("classid" in a)
# print("张三" not in a)

# a = {
#     "id" : 1,
#     "name" : "张三",
#     "score" : 90
# }
# print(a.keys()) #打印所有的key
# print(a.values()) #打印所有的valuue
# print(a.items()) #打印所有的item
# #遍历
# for key in a:
#     print(key, a[key]) #遍历时获取的是key，通过kety获取value

# print(hash(0))
# print(hash(3.14))
# print(hash("hello"))
# print(hash(True))
# print(hash((1,2,2)))

# print(hash([1,2,3]))

# #打开一个文件，第一个参数代表的是文件路径，第二个参数是文件打开方式
# #r代表read
# f = open("./hello.txt","r")
# print(f)
# print(type(f))
#
# f.close() #关闭文件

# f = open('hello.txt', 'r', encoding='utf-8')
# lines = f.readlines()
# print(lines)
# f.close()

def fucn():
    with open('hello.txt', 'r', encoding='utf-8') as f:
        #在这个代码块里面进行业务操作
        #......
        if True:
            # 这里没有关闭文件，但是只要with对应的代码块执行结束，就会自动执行f的close
            return
        #......
        f.close()